package sim;

import animal.Fresstier;
import animal.Kaefer;

public class SimulationParameters {

	/**
	 * Werte fuer die Spielwelt
	 */
	private int worldWidth = 6000;
	private int worldHeight = 2500;

	/**
	 * Paramter f�pr die AmeisenSimulation
	 */
	private int MAX_ANZAHL_FUTTERHAUFEN = 10;
	private int MAX_ANZAHL_AMEISENHAUFEN = 2;
	private int MAX_ANZAHL_KAEFER = 15;
	private int MAX_ANZAHL_SPINNEN = 0;
	private int SIM_GESCHWINDIGKEIT = 10;

	private double LAUFGESCHWINDIGKEIT_SPINNE = 8.5;
	private double LAUFGESCHWINDIGKEIT_KAEFER = 6.5;
	private double LAUFGESCHWINDIGKEIT_AMEISE = 10.5;

	/**
	 * Parameter f�r die Ameisenhaufen
	 */
	private int ANFANGSBESTAND_AMEISEN = 1000;

	/**
	 * Paramter f�r die Fresstiere
	 */
	private int APPETIT = 10;
	private int BEUTE_SUCH_RADIUS = 40;
	private int BEUTE_FRESS_RADIUS = 5;
	// private long DAUER_FRESS_PAUSEN = 5000;
	// private long BEGINN_FRESS_PAUSE = System.currentTimeMillis();
	private int MAX_JAGD_HUNGER = 10;
	private int MAX_TOD_HUNGER = 1000;
	// private long ANZAHL_HAEUFCHEN = 0;
	// private long MAX_ANZAHL_HAEUFCHEN = 0;

	/**
	 * Parameter f�r die Kaefer
	 */
	private String GRAFIK_KAEFER = "grafiken/kaefer1.png";
	private String GRAFIK_GETOETETE_KAEFER = "grafiken/toteKaefer.png";
	private String GRAFIK_HUNGERTOD_KAEFER = "grafiken/kaeferHungertod2.png";

	/**
	 * Parameter f�r die Lauftiere
	 */
	private double SCHRITTLAENGE_LAUFTIER = 5;
	private int UMDREHEN = 20;

	/**
	 * WERTE f�r die Spinnen
	 */
	private final String GRAFIK_SPINNE = "grafiken/spinne2.png";
	private final String GRAFIK_SPINNE2 = "grafiken/spinne_3.gif";
	private final String GRAFIK_GETOETETE_SPINNE = "grafiken/toteSpinne.png";
	private final String GRAFIK_KACKE = "grafiken/scheisse.png";

	/**
	 * WERTE f�r die Ameise
	 */
	private double WAHRNEHMBAR_FUTTER = 100;
	private double GREIFBAR_FUTTER = 6;
	private double ABLEGBAR_FUTTER = 9;
	private double TOLERANZ_FUTTER_WEITERGABE = 33;
	private int KAPAZITAET_FUTTER = 2;
	private int bemerkeFresstierRadius = 70;

	private String GRAFIK_GETOETETE_AMEISE = "grafiken/toteAmeise.png";
	private String GRAFIK_GETOETETE_AMEISE_SPINNE = "grafiken/ameiseSpinne2.png";

	/**
	 * @return the maxAnzahlFutterhaufen
	 */
	public int getMaxAnzahlFutterhaufen() {
		return MAX_ANZAHL_FUTTERHAUFEN;
	}

	/**
	 * @return the maxAnzahlAmeisenhaufen
	 */
	public int getMaxAnzahlAmeisenhaufen() {
		return MAX_ANZAHL_AMEISENHAUFEN;
	}

	/**
	 * @return the maxAnzahlKaefer
	 */
	public int getMaxAnzahlKaefer() {
		return MAX_ANZAHL_KAEFER;
	}

	/**
	 * @return the maxAnzahlSpinnen
	 */
	public int getMaxAnzahlSpinnen() {
		return MAX_ANZAHL_SPINNEN;
	}

	/**
	 * @return the simGeschwindigkeit
	 */
	public int getSimGeschwindigkeit() {
		return SIM_GESCHWINDIGKEIT;
	}

	/**
	 * @return the anfangsbestandAmeisen
	 */
	public int getAnfangsbestandAmeisen() {
		return ANFANGSBESTAND_AMEISEN;
	}

	/**
	 * @return the appetit
	 */
	public int getAppetit() {
		return APPETIT;
	}

	/**
	 * Liefert den Bereich, in dem Beute verfolgt wird.
	 * 
	 * @return Der Radius.
	 */
	public int getBeuteSuchRadius() {
		return BEUTE_SUCH_RADIUS;
	}

	/**
	 * Liefert den Bereich/Radius innerhalb dem Beute verspeist wird.
	 * 
	 * @return Der Radius.
	 */
	public int getBeuteFressRadius() {
		return BEUTE_FRESS_RADIUS;
	}

	// /**
	// * Liefert die Zeit in MS, wie lange das Fresstier nachdem
	// * es keinen Appetit mehr hat pausiert.
	// *
	// * @return Die Zeit in MS.
	// */
	// public long getDauerFressPausen() {
	// return DAUER_FRESS_PAUSEN;
	// }
	//
	//
	// /**
	// * Liefert den Beginn der letzten Fresspause (Timestamp in MS) oder
	// * 0, falls noch keine Pause eingelegt wurde.
	// *
	// * @return Timestamp in MS der letzten Fresspause.
	// */
	// public long getBeginn_Fress_Pause() {
	// return BEGINN_FRESS_PAUSE;
	// }
	//
	//
	// /**
	// * @return the maxJagdHunger
	// */
	// public double getMaxJagdHunger() {
	// return MAX_JAGD_HUNGER;
	// }
	//
	//
	// /**
	// * @return the maxTodHunger
	// */
	// public double getMaxTodHunger() {
	// return MAX_TOD_HUNGER;
	// }
	//
	//
	// /**
	// * @return the anzahlHaeufchen
	// */
	// public long getAnzahlHaeufchen() {
	// return ANZAHL_HAEUFCHEN;
	// }
	//
	//
	// /**
	// * @return the maxAnzahlHaeufchen
	// */
	// public long getMaxAnzahlHaeufchen() {
	// return MAX_ANZAHL_HAEUFCHEN;
	// }

	/**
	 * @return the bemerkefresstierradius
	 */
	public double getBemerkefresstierradius(Fresstier f) {
		if(f instanceof Kaefer){			
			return bemerkeFresstierRadius;
		}else{
			return bemerkeFresstierRadius*2;
		}
	}

	/**
	 * @return the laufgeschwindigkeitKaefer
	 */
	public double getLaufgeschwindigkeitKaefer() {
		return LAUFGESCHWINDIGKEIT_KAEFER;
	}

	/**
	 * @param lAUFGESCHWINDIGKEIT_KAEFER
	 *            the lAUFGESCHWINDIGKEIT_KAEFER to set
	 */
	public void setLaufgeschwindigkeit_Kaefer(double laufGeschwindigkeit) {
		LAUFGESCHWINDIGKEIT_KAEFER = laufGeschwindigkeit;
	}

	/**
	 * @return the grafikKaefer
	 */
	public String getGrafikKaefer() {
		return GRAFIK_KAEFER;
	}

	/**
	 * @return the grafikGetoeteteKaefer
	 */
	public String getGrafikGetoeteteKaefer() {
		return GRAFIK_GETOETETE_KAEFER;
	}

	/**
	 * @return the schrittlaengeLauftier
	 */
	public double getSchrittlaengeLauftier() {
		return SCHRITTLAENGE_LAUFTIER;
	}

	/**
	 * @return the umdrehen
	 */
	public int getUmdrehen() {
		return UMDREHEN;
	}

	/**
	 * @return the laufgeschwindigkeitSpinne
	 */
	public double getLaufgeschwindigkeitSpinne() {
		return LAUFGESCHWINDIGKEIT_SPINNE;
	}

	/**
	 * @return the grafikSpinne
	 */
	public String getGrafikSpinne() {
		return GRAFIK_SPINNE;
	}

	/**
	 * @return the grafikSpinne2
	 */
	public String getGrafikSpinne2() {
		return GRAFIK_SPINNE2;
	}

	/**
	 * @return the grafikKacke
	 */
	public String getGrafikKacke() {
		return GRAFIK_KACKE;
	}

	/**
	 * @return the wahrnehmbarFutter
	 */
	public double getWahrnehmbarFutter() {
		return WAHRNEHMBAR_FUTTER;
	}

	/**
	 * @return the greifbarFutter
	 */
	public double getGreifbarFutter() {
		return GREIFBAR_FUTTER;
	}

	/**
	 * @return the ablegbarFutter
	 */
	public double getAblegbarFutter() {
		return ABLEGBAR_FUTTER;
	}

	/**
	 * @return the toleranzFutterWeitergabe
	 */
	public double getToleranzFutterWeitergabe() {
		return TOLERANZ_FUTTER_WEITERGABE;
	}

	/**
	 * @return the kapazitaetFutter
	 */
	public int getKapazitaetFutter() {
		return KAPAZITAET_FUTTER;
	}

	/**
	 * @return the grafikGetoeteteAmeise
	 */
	public String getGrafikGetoeteteAmeise() {
		return GRAFIK_GETOETETE_AMEISE;
	}

	/**
	 * @return the grafikGetoeteteAmeiseSpinne
	 */
	public String getGrafikGetoeteteAmeiseSpinne() {
		return GRAFIK_GETOETETE_AMEISE_SPINNE;
	}

	public int getWorldWidth() {
		return worldWidth;
	}

	public void setWorldWidth(int worldWidth) {
		this.worldWidth = worldWidth;
	}

	public int getWorldHeight() {
		return worldHeight;
	}

	public void setWorldHeight(int worldHeight) {
		this.worldHeight = worldHeight;
	}

	/**
	 * @return the grafikHungertodKaefer
	 */
	public String getGrafikHungertodKaefer() {
		return GRAFIK_HUNGERTOD_KAEFER;
	}

	/**
	 * @return the lAUFGESCHWINDIGKEIT_AMEISE
	 */
	public double getLAUFGESCHWINDIGKEIT_AMEISE() {
		return LAUFGESCHWINDIGKEIT_AMEISE;
	}

	/**
	 * @param lAUFGESCHWINDIGKEIT_AMEISE
	 *            the lAUFGESCHWINDIGKEIT_AMEISE to set
	 */
	public void setLAUFGESCHWINDIGKEIT_AMEISE(double lAUFGESCHWINDIGKEIT_AMEISE) {
		LAUFGESCHWINDIGKEIT_AMEISE = lAUFGESCHWINDIGKEIT_AMEISE;
	}

	/**
	 * @return the mAX_TOD_HUNGER
	 */
	public int getMaxTodHunger() {
		return MAX_TOD_HUNGER;
	}

	/**
	 * @param mAX_TOD_HUNGER
	 *            the mAX_TOD_HUNGER to set
	 */
	public void setMaxTodHunger(int maxTodHunger) {
		MAX_TOD_HUNGER = maxTodHunger;
	}

	/**
	 * @return the Grafik_Getoetete_Spinne
	 */
	public String getGrafikGetoeteteSpinne() {
		return GRAFIK_GETOETETE_SPINNE;
	}

	// /**
	// * @param bEGINN_FRESS_PAUSE the bEGINN_FRESS_PAUSE to set
	// */
	// public void setBEGINN_FRESS_PAUSE(long bEGINN_FRESS_PAUSE) {
	// BEGINN_FRESS_PAUSE = bEGINN_FRESS_PAUSE;
	// }

}
